package com.open.capacity.trade.feign;

import com.open.capacity.common.feign.FeignExceptionConfig;
import com.open.capacity.common.model.Concurrent;
import com.open.capacity.common.model.Records;
import com.open.capacity.common.model.Remittance;
import com.open.capacity.common.web.PageResult;
import com.open.capacity.common.web.Result;
import com.open.capacity.trade.feign.fallback.TradeFeignClientFallbackFactory;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;


@FeignClient(value = "trade-center",configuration =FeignExceptionConfig.class,fallbackFactory = TradeFeignClientFallbackFactory.class,decode404 = true)
public interface TradeFeignClient {
//由于是合作开发，那么交易中心数据来源是根据其它模块来，
// 三个模块可以在项目合并后统，在第一次页面加载的时候去导入数据，即查询数据再新增
// 项目合并后每次数据的来源就是动态插入 各模块调用交易中心模块的feignClient
/*1.交易记录模块数据来源：a.公司管理的招聘管理模块来获取招聘的职位与所需人数(公司名，等)
                          b.已录人数来源于招聘中心的招聘推荐模块是否付款来判定是否录用（招聘中心的推荐记录）
  2.汇款管理模块数据来源：a.合作公司录用人后是否付费来源于招聘中心的招聘推荐模块
  3.兼职工资模块数据来源：a.兼职工资来源于招聘中心的招聘推荐中的是否付款*/
//    提供records接口新增
/*触发条件：a.当公司管理的招聘管理模块发布了一条新的招聘信息，将数据插入对应表后crm_recruitment，也需要将一些数据插入到交易记录表crm_records
*           b.当招聘中心的招聘推荐模块crm_recommend新增了一条数据时(即付款)，查询出对应的人去哪家公司的岗位rec_id(crm_recruitment)                                 */
/*所需数据：companyName(公司名)，position(招聘职位)，people(招聘的人数)，industry(招聘的费用)，entrys(职位已录人数)*/
/*注意：    当招聘管理模块的数据修改后，对应的crm_records数据也会修改
*           当招聘推荐模块新增一条数据时，对应的crm_records的已录人数也会发生变化(注意已录人数不能大于招聘人数)*/
    @PostMapping(value = "/records/insertRecords",params = "records")
    Result insertRecords(@RequestBody Records records);
    //修改已录人数
    @PostMapping(value = "/records/updateRecordsAccepted",params = "records")
    Result updateRecordsAccepted(@RequestBody Records records);
    //修改招聘信息
    @PostMapping(value = "/records/updateRecordsBasic",params = "records")
    Result updateRecordsBasic(@RequestBody Records records);

    @PostMapping(value = "/remittance/insertRemittance",params = "remittance")
    Result insertRemittance(@RequestBody Remittance remittance);
    //修改
    @PostMapping(value = "/remittance/updateRemittance",params = "records")
    Result updateRemittance(@RequestBody Remittance remittance);

    @PostMapping(value = "/concurrent/insertConcurrent",params = "concurrent")
    Result insertConcurrent(@RequestBody Concurrent concurrent);
    //修改
    @PostMapping(value = "/concurrent/updateConcurrent",params = "records")
    Result updateConcurrent(@RequestBody Concurrent concurrent);

}

